<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">

	<title>ASTableDataSource Protocol Reference</title>

	<link rel="stylesheet" href="../css/style.css">
	<meta name="viewport" content="initial-scale=1, maximum-scale=1.4">
	<meta name="generator" content="appledoc 2.2.1 (build 1334)">
</head>
<body class="appledoc">
	<header>
		<div class="container" class="hide-in-xcode">
			
			<h1 id="library-title">
				<a href="../index.html">  </a>
			</h1>

			<p id="developer-home">
				<a href="../index.html">AsyncDisplayKit</a>
			</p>
			
		</div>
	</header>

	<aside>
		<div class="container">
			<nav>
				<ul id="header-buttons" role="toolbar">
					<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>

					<li id="on-this-page" role="navigation">
						<label>
							On This Page

							<div class="chevron">
								<div class="chevy chevron-left"></div>
								<div class="chevy chevron-right"></div>
							</div>

							<select id="jump-to">
	<option value="top">Jump To&#133;</option>
	
	<option value="overview">Overview</option>
	

	
	
	<option value="tasks">Tasks</option>
	
	

	
	

	

	
	<optgroup label="Instance Methods">
		
		<option value="//api/name/numberOfSectionsInTableNode:">- numberOfSectionsInTableNode:</option>
		
		<option value="//api/name/tableNode:nodeBlockForRowAtIndexPath:">- tableNode:nodeBlockForRowAtIndexPath:</option>
		
		<option value="//api/name/tableNode:nodeForRowAtIndexPath:">- tableNode:nodeForRowAtIndexPath:</option>
		
		<option value="//api/name/tableNode:numberOfRowsInSection:">- tableNode:numberOfRowsInSection:</option>
		
		<option value="//api/name/tableView:nodeBlockForRowAtIndexPath:">- tableView:nodeBlockForRowAtIndexPath:</option>
		
		<option value="//api/name/tableView:nodeForRowAtIndexPath:">- tableView:nodeForRowAtIndexPath:</option>
		
		<option value="//api/name/tableViewLockDataSource:">- tableViewLockDataSource:</option>
		
		<option value="//api/name/tableViewUnlockDataSource:">- tableViewUnlockDataSource:</option>
		
	</optgroup>
	
	
</select>
						</label>
					</li>
				</ul>
			</nav>
		</div>
	</aside>

	<article>
		<div id="overview_contents" class="container">
			<div id="content">
				<main role="main">
					<h1 class="title">ASTableDataSource Protocol Reference</h1>

					
					<div class="section section-specification"><table cellspacing="0"><tbody>
						<tr>
	<th>Conforms to</th>
	<td><a href="../Protocols/ASCommonTableDataSource.html">ASCommonTableDataSource</a><br />NSObject</td>
</tr><tr>
	<th>Declared in</th>
	<td>ASTableNode.h</td>
</tr>
						</tbody></table></div>
					

                    
					
					<div class="section section-overview">
						<a title="Overview" name="overview"></a>
						<h2 class="subtitle subtitle-overview">Overview</h2>
						<p>This is a node-based UITableViewDataSource.</p>
					</div>
					
					

					
					
					<div class="section section-tasks">
						<a title="Tasks" name="tasks"></a>
						

						
						

						<div class="task-list">
							<div class="section-method">
	<a name="//api/name/numberOfSectionsInTableNode:" title="numberOfSectionsInTableNode:"></a>
	<h3 class="method-title"><code><a href="#//api/name/numberOfSectionsInTableNode:">&ndash;&nbsp;numberOfSectionsInTableNode:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Asks the data source for the number of sections in the table node.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (NSInteger)numberOfSectionsInTableNode:(ASTableNode *)<em>tableNode</em></code></div>

		    
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableNode:numberOfRowsInSection:" title="tableNode:numberOfRowsInSection:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableNode:numberOfRowsInSection:">&ndash;&nbsp;tableNode:numberOfRowsInSection:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Asks the data source for the number of rows in the given section of the table node.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (NSInteger)tableNode:(ASTableNode *)<em>tableNode</em> numberOfRowsInSection:(NSInteger)<em>section</em></code></div>

		    
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableNode:nodeBlockForRowAtIndexPath:" title="tableNode:nodeBlockForRowAtIndexPath:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableNode:nodeBlockForRowAtIndexPath:">&ndash;&nbsp;tableNode:nodeBlockForRowAtIndexPath:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Asks the data source for a block to create a node to represent the row at the given index path.
The block will be run by the table node concurrently in the background before the row is inserted
into the table view.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (ASCellNodeBlock)tableNode:(ASTableNode *)<em>tableNode</em> nodeBlockForRowAtIndexPath:(NSIndexPath *)<em>indexPath</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>tableNode</code></th>
						<td><p>The sender.</p></td>
					</tr>
				
					<tr>
						<th scope="row" class="argument-name"><code>indexPath</code></th>
						<td><p>The index path of the row.</p></td>
					</tr>
				
				</table>
			</div>
			

			
			<div class="method-subsection return">
				<h4 class="method-subtitle parameter-title">Return Value</h4>
				<p>a block that creates the node for display at this indexpath.
Must be thread-safe (can be called on the main thread or a background
queue) and should not implement reuse (it will be called once per row).</p>
			</div>
			

			

			
			<div class="method-subsection discussion-section">
				<h4 class="method-subtitle">Discussion</h4>
				<div class="note"><p><strong>Note:</strong> This method takes precedence over tableNode:nodeForRowAtIndexPath: if implemented.</p></div>
			</div>
			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableNode:nodeForRowAtIndexPath:" title="tableNode:nodeForRowAtIndexPath:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableNode:nodeForRowAtIndexPath:">&ndash;&nbsp;tableNode:nodeForRowAtIndexPath:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Asks the data source for a node to represent the row at the given index path.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (ASCellNode *)tableNode:(ASTableNode *)<em>tableNode</em> nodeForRowAtIndexPath:(NSIndexPath *)<em>indexPath</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>tableNode</code></th>
						<td><p>The sender.</p></td>
					</tr>
				
					<tr>
						<th scope="row" class="argument-name"><code>indexPath</code></th>
						<td><p>The index path of the row.</p></td>
					</tr>
				
				</table>
			</div>
			

			
			<div class="method-subsection return">
				<h4 class="method-subtitle parameter-title">Return Value</h4>
				<p>a node to display for this row. This will be called on the main thread and should not implement reuse (it will be called once per row). Unlike UITableView&rsquo;s version, this method
is not called when the row is about to display.</p>
			</div>
			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableView:nodeForRowAtIndexPath:" title="tableView:nodeForRowAtIndexPath:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableView:nodeForRowAtIndexPath:">&ndash;&nbsp;tableView:nodeForRowAtIndexPath:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Similar to -tableView:cellForRowAtIndexPath:.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (ASCellNode *)tableView:(ASTableView *)<em>tableView</em> nodeForRowAtIndexPath:(NSIndexPath *)<em>indexPath</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>indexPath</code></th>
						<td><p>The index path of the requested node.</p></td>
					</tr>
				
					<tr>
						<th scope="row" class="argument-name"><code>tableNode</code></th>
						<td><p>The sender.</p></td>
					</tr>
				
				</table>
			</div>
			

			
			<div class="method-subsection return">
				<h4 class="method-subtitle parameter-title">Return Value</h4>
				<p>a node for display at this indexpath. This will be called on the main thread and should not implement reuse (it will be called once per row). Unlike UITableView&rsquo;s version, this method
is not called when the row is about to display.</p>
			</div>
			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableView:nodeBlockForRowAtIndexPath:" title="tableView:nodeBlockForRowAtIndexPath:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableView:nodeBlockForRowAtIndexPath:">&ndash;&nbsp;tableView:nodeBlockForRowAtIndexPath:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Similar to -tableView:nodeForRowAtIndexPath:
This method takes precedence over tableView:nodeForRowAtIndexPath: if implemented.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (ASCellNodeBlock)tableView:(ASTableView *)<em>tableView</em> nodeBlockForRowAtIndexPath:(NSIndexPath *)<em>indexPath</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>tableView</code></th>
						<td><p>The sender.</p></td>
					</tr>
				
					<tr>
						<th scope="row" class="argument-name"><code>indexPath</code></th>
						<td><p>The index path of the requested node.</p></td>
					</tr>
				
				</table>
			</div>
			

			
			<div class="method-subsection return">
				<h4 class="method-subtitle parameter-title">Return Value</h4>
				<p>a block that creates the node for display at this indexpath.
Must be thread-safe (can be called on the main thread or a background
queue) and should not implement reuse (it will be called once per row).</p>
			</div>
			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableViewLockDataSource:" title="tableViewLockDataSource:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableViewLockDataSource:">&ndash;&nbsp;tableViewLockDataSource:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Indicator to lock the data source for data fetching in async mode.
We should not update the data source until the data source has been unlocked. Otherwise, it will incur data inconsistency or exception
due to the data access in async mode. (<b class="deprecated">Deprecated:</b><span class="deprecated"> The data source is always accessed on the main thread, and this method will not be called.</span>)</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (void)tableViewLockDataSource:(ASTableView *)<em>tableView</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>tableView</code></th>
						<td><p>The sender.</p></td>
					</tr>
				
				</table>
			</div>
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/tableViewUnlockDataSource:" title="tableViewUnlockDataSource:"></a>
	<h3 class="method-title"><code><a href="#//api/name/tableViewUnlockDataSource:">&ndash;&nbsp;tableViewUnlockDataSource:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Indicator to unlock the data source for data fetching in asyn mode.
We should not update the data source until the data source has been unlocked. Otherwise, it will incur data inconsistency or exception
due to the data access in async mode. (<b class="deprecated">Deprecated:</b><span class="deprecated"> The data source is always accessed on the main thread, and this method will not be called.</span>)</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (void)tableViewUnlockDataSource:(ASTableView *)<em>tableView</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>tableView</code></th>
						<td><p>The sender.</p></td>
					</tr>
				
				</table>
			</div>
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASTableNode.h</code></p>
			</div>
			
			
		</div>
	</div>
</div>
						</div>
						
					</div>
					
					

                    
                    
          
				</main>

				<footer>
					<div class="footer-copyright">
						
						<p class="copyright">Copyright &copy; 2016 AsyncDisplayKit. All rights reserved. Updated: 2016-11-05</p>
						
						
						<p class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.2.1 (build 1334)</a>.</p>
						
					</div>
				</footer>
			</div>
		</div>
	</article>

	<script src="../js/script.js"></script>
</body>
</html>